The telephone is one of the most widely used communication equipments in the world. At first, it was merely a convenient tool to allow people to communicate while they are physically separated. Recently, many companies use telephones to market products and services, provide technical supports to consumer products, allow callers to access their own financial data, etc. Thus, the telephone is becoming a major business and marketing tool.
In order to more effectively use telephone for business and marketing purposes, call centers have been developed. In a call center, a large number of agents handle telephone communication with callers. The matching of calls between callers and agents is typically performed by software. A simple example is used here to describe a few of the many advantages of using call centers. When a call is made to a call center, the telephone number of the calling line is typically made available to the call center by a telephone carrier. Based on this telephone number, the software in the call center can access a database server to obtain information about the caller who has been assigned that phone number. The software can now route the call to an agent who can best handle the call based on predefined criteria (e.g., language skill, knowledge of products the caller bought, etc.). The software immediately transfers relevant information to a computer screen used by the agent. Thus, the agent can gain valuable information about the caller prior to receiving the call. As a result, the agent can more effectively handle the telephone transaction.
It can be seen from the above example that the enabling technology requires a combination of telephone switching and computer information processing technologies. The term commonly used for this combined technology is computer-telephony-integration (CTI).
In making a routing decision, the software needs to know the state of all the agents. For example, if an agent is in a busy state (e.g, answering another call), calls will not be routed to that agent. In the prior art CTI system, an agent has only one state. The routing software (as well as other software in the system) makes decisions based on this state. However, this system is inflexible. For example, even though an agent may be busy in performing some tasks (e.g., talking with a co-worker on a non-urgent matter), he/she may still be able to accept a call from a customer if there is no other qualified agent available to take that call. Thus, it is desirable to have a flexible system that can make better use of the resource of a call center.